package main

import (
	"fmt"
	"time"
)

func test() {
	for i := 0; i < 5; i++ {
		fmt.Println("test执行", i)
	}
}

func main() {
	// 我们使用go关键字启动了test作为一个goroutine
	// Go协程与线程的比较
	//启动开销：Go协程的启动开销远小于线程。因此，你可以轻松启动成千上万个goroutine。
	//内存占用：每个Go协程的堆栈大小开始时很小（通常在几KB），并且可以根据需要增长和缩小，
	//而线程通常需要固定的、较大的堆栈内存（通常为1MB或更多）。
	//调度：Go协程是由Go运行时系统而不是操作系统调度的。这意味着Go协程之间的上下文切换开销更小。
	//安全性：Go协程为开发者提供了简化的并发模型，配合通道（channels）等同步机制，减少了并发程序中常见的错误。
	go test()
	for i := 0; i < 5; i++ {
		fmt.Println("main执行", i)
	}
	time.Sleep(time.Second)
}
